Explicacion sobre las asociaciones de tipos de archivos y de las aplicaciones por defecto para dichos archivos
En Linux la asociacion entre tipos de archivos y su aplicacion por defecto se configura en dos sitios:
La localizacion de los archivos de mimeapps.list es la siguiente (por orden de preferencia):
Los archivos .desktop se encuentra en una de estas localizaciones:
La manera en la que el sistema busca las aplicaciones por defecto es la siguiente
Dentro de un archivo mimeapps.list nos podemos encontrar algo como esto:
[Added Associations]
application/pdf=okularApplication_pdf.desktop;draw.desktop;gimp.desktop;org.inkscape.Inkscape.desktop;google-chrome.desktop;
audio/mpeg=vlc.desktop;audacity.desktop;
image/svg+xml=org.inkscape.Inkscape.desktop;gimp.desktop;org.kde.kate.desktop;org.kde.kwrite.desktop;writer.desktop;okularApplication_txt.desktop;google-chrome.desktop;firefox.desktop;
inode/directory=org.kde.dolphin.desktop;
message/rfc822=userapp-Thunderbird-LLP660.desktop;
text/plain=org.kde.kate.desktop;org.kde.kwrite.desktop;writer.desktop;okularApplication_txt.desktop;
video/x-matroska=vlc.desktop;org.kde.kaffeine.desktop;
x-scheme-handler/afirma=autofirma.desktop
x-scheme-handler/http=google-chrome.desktop;
x-scheme-handler/https=google-chrome.desktop;
x-scheme-handler/mailto=userapp-Thunderbird-LLP660.desktop;
[Default Applications]
application/pdf=okularApplication_pdf.desktop;
audio/mpeg=vlc.desktop;
image/svg+xml=org.inkscape.Inkscape.desktop;
inode/directory=org.kde.dolphin.desktop;
message/rfc822=userapp-Thunderbird-LLP660.desktop
text/html=google-chrome.desktop
text/plain=org.kde.kwrite.desktop;
video/x-matroska=vlc.desktop;
x-scheme-handler/afirma=autofirma.desktop
x-scheme-handler/http=google-chrome.desktop;
x-scheme-handler/https=google-chrome.desktop;
x-scheme-handler/mailto=userapp-Thunderbird-LLP660.desktop
x-scheme-handler/prorealtimesoftware=ProRealTime.desktop
Aqui se pueden encontrar dos cosas:
application/pdf
audio/mpeg
text/plain
Hacen referencia a un tipo de archivo (con una extension o extensiones concretas).
si queremos revisar a que extension o extensiones estan asociadas podemos consultarlo dentro de:
/usr/share/mime
Dentro de esa carpeta tenemos subcarpetas asociadas a cada categoria.
y dentro de esas subcarpetas tenemos archivos xml con la informacion para cada tipo de archivo, en el caso de pdf podemos encontrar:
> cat application/pdf.xml
En el caso de audio/mpeg por ejemplo, hay mas de una extension asociada
x-scheme-handler/afirma
x-scheme-handler/http
x-scheme-handler/https
x-scheme-handler/mailto
Se usa x-scheme-handler/ seguido del nombre del protocolo
No son asociaciones directas con un tipo de archivo, si no con un protocolo como http o como mailto. Podemos incluso definir protocolos personalizados y no tan genericos como por ejemplo el de afirma que usa el dni electronico.
Cuando estas asociaciones apuntan a un archivo .desktop tenemos que asegurarnos de que el archivo .desktop este bien configurado con la linea MimeType haciendo referencia al mismo protocolo con el que este asignado, si no puede dar lugar a errores.
En el caso de protoclo http por ejemplo, que esta asociado con google-chrome.desktop:
Podemos ver que entre otros muchos protocolos la linea MimeType esta asociada al http (x-scheme-handler/http)
Para utilizar los programas por defecto muchas aplicaciones utilizan xdg-open para que se abra la aplicacion por defecto asociada al tipo de archivo
Ejemplos:
> xdg-open archivo.txt
Abrira un editor de texto (como kwrite o kate) para gestionar el archivo
> xdg-open archivo.pdf
Abrira un lector de pdf (como okular)
Esta aplicacion (en realidad es un script) se utiliza para establecer o consultar cuales son las aplicaciones asociadas a los tipos de archivos
NOTA: xdg-mime es un script que internamente utiliza la aplicacion ktraderclient5 para realizar ciertas consultas.
Ejemplos:
xdg-mime query default application/pdf
Devuelve la aplicacion por defecto para archivos pdf
xdg-mime default google-chrome.desktop application/pdf
Establece google chrome como aplicacion por defecto para archivos pdf
Abre el gestor de correo por defecto
xdg | mimeapps.list | xdg-open | MimeType